package escom.dds.gestionarreporte.controller;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import javax.inject.Named;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;





import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.rest.DefaultHttpHeaders;
import org.apache.struts2.rest.HttpHeaders;
import org.apache.struts2.util.ServletContextAware;

import com.opensymphony.xwork2.ActionSupport;

import escom.dds.gestionarreporte.bussines.ReporteBs;


public class ImprimirReporteCtrl extends ActionSupport implements
		ServletRequestAware, ServletResponseAware, ServletContextAware {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private HttpServletRequest request;
	private HttpServletResponse response;
	private ServletContext context;

	private ReporteBs reporteBs;

	

	public String index() {
		return "index";
	}

	

	/**
	 * Metodo el configura la cabecera html para que el flujo de datos que salga
	 * sea un archivo Excel y con un nombre en especifico, también manda al
	 * método compilarReporte3 el el Bussines para realizar el reporte.
	 * context.getRealPath("/"); Obtiene la ruta hasta donde esta la carpeta
	 * webapp
	 */
	public void reporteAlumno() {
		try {
			String contextReports = context.getRealPath("/");
			response.setContentType("application/vnd.ms-excel");
			response.setHeader("Content-Disposition",
					"attachment; filename=\"alumno.xls\";");
			reporteBs.compilarReporteAlumno(response.getOutputStream(), contextReports);
		} catch (IOException e) {
			System.out.println("No se pudo generar el reporte en el controlador");
		}
	}
	
	public void reporteCarrera() {
		try {
			String contextReports = context.getRealPath("/");
			response.setContentType("application/vnd.ms-excel");
			response.setHeader("Content-Disposition",
					"attachment; filename=\"Carrera.xls\";");
			reporteBs.compilarReporteCarrera(response.getOutputStream(), contextReports);
		} catch (IOException e) {
			System.out.println("No se pudo generar el reporte en el controlador");
		}
	}
	
	public void reporteMateria() {
		try {
			String contextReports = context.getRealPath("/");
			response.setContentType("application/vnd.ms-excel");
			response.setHeader("Content-Disposition",
					"attachment; filename=\"Materia.xls\";");
			reporteBs.compilarReporteMateria(response.getOutputStream(), contextReports);
		} catch (IOException e) {
			System.out.println("No se pudo generar el reporte en el controlador");
		}
	}



	public void setServletContext(ServletContext context) {
		this.context = context;
		
	}



	public void setServletResponse(HttpServletResponse response) {
		this.response = response;
		
	}



	public void setServletRequest(HttpServletRequest request) {
		this.request = request;
		
	}



	/**
	 * @return the reporteBs
	 */
	public ReporteBs getReporteBs() {
		return reporteBs;
	}



	/**
	 * @param reporteBs the reporteBs to set
	 */
	public void setReporteBs(ReporteBs reporteBs) {
		this.reporteBs = reporteBs;
	}

	
	
}

